package com.mapper;

import com.domain.BlogArticle;
import org.apache.ibatis.annotations.*;

import java.util.List;

@Mapper
public interface BlogArticleMapper {
    //根据id查询文章信息
    @Select("SELECT * FROM t_article WHERE id = #{id}")
    BlogArticle selectArticleWithId(Integer id);
    //发表文章，同时使用@Options注解获取自动生成的主键id
    @Insert("INSERT INTO t_article (title, created, modified, tags, categories, allow_comment, thumbnail, content)" +
            "values (#{title}, #{created}, #{modified}, #{tags}, #{categories}, #{allowComment}, #{thumbnail}, #{content})")
    @Options(useGeneratedKeys = true, keyProperty = "id", keyColumn = "id")
    Integer publishArticle(BlogArticle article);
    //文章分页查询
    @Select("SELECT * FROM t_article ORDER BY id DESC")
    List<BlogArticle> selectArticleWithPage();
    //通过id删除文章
    @Delete("DELETE FROM t_article WHERE id = #{id}")
    Integer deleteArticleWithId(Integer id);
    //站点服务统计，统计文章数量
    @Select("SELECT COUNT(1) FROM t_article")
    Integer countArticle();
    //通过id更新文章
//    @Update("UPDATE t_article SET title=#{title}, created=#{created}, modified=#{modified}, tags=#{tags}, thumbnail=#{thumbnail}, " +
//            "content=#{content}, categories=#{categories}, hits=#{hits}, comments_num=#{commentsNum},allow_comment=#{allowComment} WHERE id = #{id}")
    @Update({
        "<script>",
            "UPDATE t_article",
            "<set>",
                "<if test='title != null'>title = #{title},</if>",
                "<if test='content != null'>content = #{content},</if>",
                "<if test='created != null'>created = #{created},</if>",
                "<if test='categories != null'>categories = #{categories},</if>",
                "<if test='tags != null'>tags = #{tags},</if>",
                "<if test='allowComment != null'>allowComment = #{allowComment},</if>",
                "<if test='thumbnail != null'>thumbnail = #{thumbnail},</if>",
                "modified = CURRENT_TIMESTAMP," +
            "</set>",
            "WHERE id = #{id}",
            "</script>"
    })
    Integer updateArticleWithId(BlogArticle article);


}
